package zww.study.objcet;

public class SuperStudy extends SuperStudyParent{
    /*
    * this/super:
    *       this:代表本类对象的引用
    *       super:代表父类存储空间的标识
    *
    * this.成员变量：访问本类成员变量；super.成员变量：访问父类成员变量
    * 构造方法：
    * this() 访问本类的构造方法
    * super() 访问父类的构造方法
    * */

    /*
    * 继承构造方法的访问特点：
    * **** 子类中所有的构造方法默认都会访问父类中无参的构造方法；
    * 子类初始化之前，一定要先完成父类数据的初始化，
    *   因为每一个子类构造方法的第一条语句默认都是：super()
    * */

    /*
    * this() 和 super() 都指的是对象，所以，均不可以在 static 环境中使用。
    *           包括：static 变量,static 方法，static 语句块。
    *
    * 从本质上讲，this 是一个指向本对象的指针, 然而 super 是一个 Java 关键字。
    * */

    SuperStudy() {
        super(); // 调用父类构造方法（1）
        prt("子类·调用父类'无参数构造方法'： "+"A chinese coder.");
    }

    SuperStudy(String name) {
        super(name);// 调用父类具有相同形参的构造方法（2）
        prt("子类·调用父类'含一个参数的构造方法'： "+"his name is " + name);
    }

    SuperStudy(String name, int age) {
        this(name);// 调用具有相同形参的构造方法（3）
        prt("子类：调用本类具有相同形参的构造方法：his age is " + age);
    }

    public static void main(String[] args) {
        SuperStudy cn = new SuperStudy();
        cn = new SuperStudy("codersai");
        cn = new SuperStudy("codersai", 18);
    }



}
